//
//
//
//class Solution {
//
//    List<List<String>> ret = new ArrayList<>();
//    List<String> path = new ArrayList<>();
//
//    public List<List<String>> partition(String s) {
//        partition(s, 0);
//        return ret;
//    }
//
//
//    public void partition(String s, int index) {
//        if (index >= s.length()) {
//            ret.add(new ArrayList<>(path));
//            return;
//        }
//        for (int i = index; i < s.length(); i++) {
//            String str = s.substring(index, i + 1);
//            if (judge(str)) {
//                path.add(str);
//                partition(s, i + 1);
//                path.remove(path.size() - 1);
//            }
//        }
//    }
//
//
//    public boolean judge(String str) {
//        int left = 0, right = str.length() - 1;
//        while (left < right) {
//            if (str.charAt(left) != str.charAt(right)) {
//                return false;
//            }
//            left++;
//            right--;
//        }
//        return true;
//    }
//}